package att_java ;

/**
 * Définit une TDM (Table des Méthodes).
 */
public class TDM extends TDS<INFO_METHODE> {

	protected int taille ;
	protected int deplacement_suivant ;
	
	public TDM ( ) {
		
		super() ;
		
		taille = 0 ;
		this.deplacement_suivant = 0 ;
		
	}
	
	public TDM (TDM parente) {
		
		super(parente) ;
		
		taille = 0 ;
		this.deplacement_suivant = 0 ; // pas pris en compte.
		
	}
	
	public void inserer (INFO_METHODE methode) {
		
		INFO_METHODE old_methode = super.chercher(methode.nom) ;
		
		if (old_methode == null) {
			super.inserer(methode) ;
			
			this.taille = this.taille + 1 ;
			this.deplacement_suivant = this.deplacement_suivant + 1 ;
		} else {
			methode.setDeplacement(old_methode.getDeplacement()) ;
			this.table.removeElementAt(old_methode.getDeplacement()) ;
			this.table.insertElementAt(methode, old_methode.getDeplacement()) ;
		}
		
	}
	
	public int getTaille ( ) {
		
		return this.taille ;
		
	}
	
	public int getDeplacementSuivant ( ) {
		
		return this.deplacement_suivant ;
		
	}
	
	public String toString ( ) {
		
		return this.toString("") ;
		
	}
	
	public String toString (String prefix) {
		
		return prefix + "TDM:" + "\n" + super.toString(prefix) ;
		
	}
	
}
